<?php

header ('Cache-control: no-cache');

define ('DOC_ROOT', str_replace ("\\", '/', rtrim (dirname (__FILE__), '/')));
define ('ENGINE_ROOT', DOC_ROOT . '/explay');

$pclLib = DOC_ROOT . '/pclzip.lib.php';
$installZip = DOC_ROOT . '/install.zip';
$dumpFile = DOC_ROOT . '/dump.sql';

if (!file_exists ($pclLib)) {
	exit ('Не найден файл pclzip.lib.php!');
}
if (!file_exists ($installZip)) {
	exit ('Не найден файл install.zip!');
}
if (!file_exists ($dumpFile)) {
	exit ('Не найден файл dump.sql!');
}

if (empty ($_POST['go'])) {
?>
<html>
	<head>
		<title>Установка Explay CMS</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<style type="text/css">
			body {
				background: #fff;
				font-family: Arial;
				font-size: 10pt;
				color: #000;
			}
			h1 {
				font-family: "Times New Roman", Arial;
				font-weight: bold;
				font-size: 22pt;
			}
			div.caption {
				float: left;
				width: 120px;
			}
			div.value {
				margin-left: 120px;
			}
		</style>
	</head>
	<body>
		<h1>Установка Explay CMS</h1>
		<p>Для того, чтобы начать устновку, заполните, пожалуйста, информацию о базе данных.</p>
		<form method="post" action="">
			<p>
				<div class="caption">Сервер:</div>
				<div class="value"><input type="text" name="db_server" value="127.0.0.1" /></div>
			</p>
			<p>
				<div class="caption">Пользователь:</div>
				<div class="value"><input type="text" name="db_user" value="" /></div>
			</p>
			<p>
				<div class="caption">Пароль:</div>
				<div class="value"><input type="text" name="db_pass" value="" /></div>
			</p>
			<p>
				<div class="caption">База данных:</div>
				<div class="value"><input type="text" name="db_name" value="" /></div>
			</p>
			<p><input type="submit" name="go" value="Начать установку" /></p>
			<p><b>Внимание!</b> Установка может занять несколько минут, не закрывайте браузер!</p>
		</form>
	</body>
</html>
<?php
} else {
	include $pclLib;
	
	$server = trim ($_POST['db_server']);
	$user = trim ($_POST['db_user']);
	$pass = trim ($_POST['db_pass']);
	$dbname = trim ($_POST['db_name']);
	
	if (!$mysqlconnect = mysql_connect ($server, $user, $pass)) {
		exit ('Не удалось подключиться к серверу базы данных!<br><a href="javascript:history.back();">Назад</a>');
	}
		
	if (!mysql_select_db ($dbname, $mysqlconnect)) {
		exit ('Не удалось подключиться к базе данных!<br><a href="javascript:history.back();">Назад</a>');
	}
	
	mysql_query("/*!40101 SET NAMES 'utf8' */");
	
	$zip = new PclZip ($installZip);

	if (!$zip->extract ()) {
		exit ('Ошибка zip-архива install.zip: ' . $zip->errorInfo(true));
	}
	
	$DBConfigFile = ENGINE_ROOT . '/DBConfig.php';
	
	if (!file_exists ($DBConfigFile)) {
		exit ('Файл explay/DBConfig.php не найден! Возможно, это связано с повреждением или неправильным zip-архивом install.zip.');
	}
	
	$config = <<<TEXT
<?php
define ('DB_SERVER', '{$server}');
define ('DB_USER', '{$user}');
define ('DB_PASSWORD', '{$pass}');
define ('DB_NAME', '{$dbname}');
TEXT;

	$file = fopen ($DBConfigFile, 'w+');
	fwrite ($file, $config);
	fclose ($file);
	
	$aQueries = file ($dumpFile);
	
	mysql_query ("SET AUTOCOMMIT=0");
	mysql_query ("START TRANSACTION");
	
	foreach ($aQueries as $query) {
		mysql_query ($query);
		$err = mysql_error ();
		
		if ($err) {
			mysql_query ("ROLLBACK");
			exit ('Ошибка MySQL: ' . $err . '<br><br><i>' . $query . '</i>');
		}
	}
	
	mysql_query ("COMMIT");

	print 'Установка завершена успешно!<br />Удалите следующие файлы: install.php, install.zip, dump.sql, pclzip.lib.php';
}